require 'rubygems'
require 'sinatra'
require 'erb'

require 'mm2s5'
require 'feedmaker'

require 'java'

include_class 'org.apache.poi.hslf.usermodel.SlideShow'
include_class 'org.apache.poi.hslf.HSLFSlideShow'
include_class 'org.apache.poi.hslf.model.Slide'




# アップロード可能な最大ファイルサイズ
MAX_FILE_SIZE_KB = 300

# HelperMethodを定義
helpers do
  def partial(template, options={})
    erb template, options.merge(:layout => false) # 常にlayout切る
  end
end

get '/' do
  erb :index
end

# RSSフィードを描画
get '/feed' do
  @feed = FeedMaker::get_feed
  erb :feed, :layout => false
end

post '/presentation.html' do
  check_content_length

  # アップロードされたファイル
  mm_file = params[:file][:tempfile]
  # メタデータ
  metadata = { }
  [:template, :author, :company, :presdate].each do |key|
    metadata[key] = params[key] if !params[key].nil? && !params[key].empty?
  end

  @m = Mm2s5.new(mm_file, metadata)
  erb :s5, :layout => false
end

# リクエストのContent-lengthを返す
def check_content_length
  req = Rack::Request.new(env)
  file_size = req.content_length.to_i / 1000
  if file_size > MAX_FILE_SIZE_KB
    @error_msg = "ファイルサイズが最大値(#{MAX_FILE_SIZE_KB}KB)を超えています。"
    @error_msg << "（実際のファイルサイズ=[#{file_size}KB]）"
    halt 413, (erb :index)
  end
end
